package com.zking;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.ScanResult;
import redis.clients.jedis.Tuple;

import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {
    public static void main(String[] args) {

        //1.定义IP和端口
        String ip = "127.0.0.1";
        int port = 6379;
        //2.创建Jedis对象//ok
        Jedis jedis = new Jedis(ip, port);
        //3.设置访问密码
        jedis.auth("123456");
        //4.测试
        String ping = jedis.ping();
        System.out.println(ping);
        //5.切换到第三个数据库
        String select = jedis.select(2);
        System.out.println(select);

//        //1.String字符串
//        jedis.set("name","张三");
//        jedis.set("age","21");
//        //TTL:time to live
//        jedis.set("sex","男");
//        jedis.expire("sex",10);
//         //获取数据
//        String name = jedis.get("name");
//        System.out.println(name);
//        //判断数据是否存在
//        System.out.println(jedis.exists("sex"));
//        //判断数据类型
//        System.out.println(jedis.type("name"));
//        //计数器操作(原子性)
//        jedis.set("cn","1");
//        //递增,每次+1
//        Long cn = jedis.incr("cn");
//        System.out.println("cn");
//        //递增，可控制的递增此事
//        Long cn1 = jedis.incrBy("cn", 2L);
//        System.out.println(cn1);
//        //递减
//        Long cn2 = jedis.decr("cn");
//        System.out.println(cn2);
//        //删除数据
//        jedis.del("name","age");


        //2.Hash:适用于存储对象
        //单个存储
//        jedis.hset("student","name","李四");
//       //批量存储
//        Map<String,String> map=new HashMap<String, String>();
//        map.put("sex","女");
//        map.put("age","21");
//        jedis.hmset("student",map);
        //jedis.hset("student","name","小七");
        //判断hash类型中的某一个属性是否存在
//        System.out.println(jedis.hexists("student", "address"));
//        //删除一个属性
//        jedis.hdel("student","age");

        //3.List:列表
        //从左往右添加数据(头部)
//        jedis.lpush("names","zs","ls","ww","zl");
//        //获取数据的长度
//        Long len = jedis.llen("names");
//        //循环
//        for (int i = 0; i <len ; i++) {
//            //从左往右
////            System.out.println(jedis.lpop("names"));
//            //从右往左
//            System.out.println(jedis.rpop("names"));
        //   }
        //4.Set集合：无序，唯一
//        jedis.sadd("names","zs","ls","ww");
//        //获取长度
//        System.out.println(jedis.scard("names"));
//        //循环
//        ScanResult<String> name = jedis.sscan("names", "0");
//        name.getResult().forEach(System.out::println);

        //5.Zset集合：右序
//        jedis.zadd("goods",89d,"肥皂快乐水");
//        Map<String,Double> map= new HashMap<String, Double>();
//        map.put("雪碧",100d);
//        map.put("纯牛马",70d);
//        jedis.zadd("goods",map);

        ScanResult<Tuple> goods = jedis.zscan("goods", "0");
        List<Tuple> result = goods.getResult();
        for (Tuple tuple : result) {
            System.out.println(tuple.getElement() + "=" + tuple.getScore());
        }
        System.out.println("----------------------------");
        //反转
        result.sort(Comparator.reverseOrder());
        for (Tuple tuple : result) {
            System.out.println(tuple.getElement() + "=" + tuple.getScore());
        }

    }
}